package com.videomaru
{
	import flash.display.MovieClip;
	
	public interface IPlayable
	{
		// Properties (Getters and setters)
		/**
		* A string indicating the kind of media the class is capable of playing.  
		*/
		function get mediatype():String;
		/**
		* Will the media start playing by itself?
		*/
		function set autoplay(b:Boolean):void;
		function get autoplay():Boolean;
		/**
		* Tells the player how to scale the media
		* @see com.videomaru.PlayerScaleMode   
		*/
        function set scaleMode(b:String):void;
		function get scaleMode():String;
        /**
		* Holds the current play state
		*/
		function get isPlaying():Boolean;
        /**
		* Holds the duration of the media file
		*/
        function set duration(b:Number):void;
		function get duration():Number;
        /**
		* When playback ends, should the media rewind to the start?
		*/
        function set autorewind(b:Boolean):void;
		function get autorewind():Boolean;
        /**
		* The URL of the media to display
		*/
        function set fileURL(b:String):void;
		function get fileURL():String;
        /**
		* Number of seconds to buffer 
		*/
		function set bufferTime(b:Number):void;
		function get bufferTime():Number;
		/**
		* The playhead's position in media file
		*/
		function set position(p:Number):void;
		function get position():Number;
		/**
		* Smooth media when scaled?
		*/
        function set smoothing(b:Boolean):void;
		function get smoothing():Boolean;
        
		// Core
		function play():void;
		function pause():void;
		function stop():void;
		function getDuration():Number;
		
		// Audio
		function getVol():Number;
		function setVol(v:Number):void;
		
		// System
		/**
		 * Removes any listeners and makes sure the object can be garbage collected (IMPORTANT!)
		 */
		function remove():void;
		/**
		 * Just as for other components
		 */
		function setSize(w:Number, h:Number):void;
		/**
		* Event overrides
		*/
		function addEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false):void;
		function removeEventListener(type:String,listener:Function,useCapture:Boolean=false):void;
		/**
		* Size overrrides
		*/
		function set height(p:Number):void;
		function get height():Number;
		function set width(p:Number):void;
		function get width():Number;
	}
}